#include "bsp_gpio.h"
#include "app_dido.h"
#include "app_main_can.h"


static bool GetFBState(GPIO_PortDef io, InST *arg)
{
    if (dv_DIDO.fread(io))
    {
        arg->uc_HCnt++;
        arg->uc_LCnt = 0;
        if (arg->uc_HCnt >= COUNTER_100)
        {
            arg->uc_HCnt = 0;
            arg->uc_InFlag = true;
        }
    }
    else
    {
        arg->uc_HCnt = 0;
        arg->uc_LCnt++;
        if (arg->uc_LCnt >= COUNTER_100)
        {
            arg->uc_LCnt = 0;
            arg->uc_InFlag = false;
        }
    }
    return arg->uc_InFlag;
}

void init_app_dido(void)
{
    //dv_DIDO.fwrite(IO_CHG,true);
}

void app_dido_in_check(void)
{

}

void app_dido_run(void)
{
    if(app_main_can.ctrl_type == EM_CTRL_TYPE_IO)
    {
        switch (app_main_can.io_chl)
        {
        case EM_IO_ON:
            if(app_main_can.io_st == EM_IO_H) dv_DIDO.fwrite(IO_ON,true);
            else if(app_main_can.io_st == EM_IO_L) dv_DIDO.fwrite(IO_ON,false);			
            break;
        case EM_IO_CHG: 
            if(app_main_can.io_st == EM_IO_H) dv_DIDO.fwrite(IO_CHG,true);
            else if(app_main_can.io_st == EM_IO_L) dv_DIDO.fwrite(IO_CHG,false);			
            break;
        case EM_IO_CC2: 
            if(app_main_can.io_st == EM_IO_H) dv_DIDO.fwrite(IO_CC2,true);
            else if(app_main_can.io_st == EM_IO_L) dv_DIDO.fwrite(IO_CC2,false);
            break;
        default:
            break;
        }
    }

    
}